package businessdelegate;

/**
 * @Author: linKe
 * @Date: 2022/1/14 21:51
 * @FileName: AppTest
 * @version: 1.0
 * @Description: 测试，此模式在客户端和业务层之间加了一层抽象(BusinessDelegate)，这样可以解耦
 * 代表委托模式   代理模式测试
 * 静态代理
 */
public class AppTest {
    public static void main(String[] args) {
        BusinessLookupService lookupService = new BusinessLookupService();
        lookupService.setLinService(new LinServiceImpl());
        lookupService.setKeService(new KeServiceImpl());
        // 代表对象
        BusinessDelegate delegate = new BusinessDelegate(lookupService);
        // 设置业务对象实现类
        delegate.setServiceType(ServiceType.LIN);

        Client client = new Client(delegate);
        // 客户端调用任务  调用的委托人的doTask方法
        client.doTask();
        // LinServiceImpl service 执行

        // 切换类型 切换委托人
        delegate.setServiceType(ServiceType.KE);
        client.doTask();
        // KeServiceImpl service执行
    }
}
